package com.xinsoft.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xinsoft.entity.dto.CusDeviceNetWorkDTO;
import com.xinsoft.entity.dto.CusDevicePageParam;
import com.xinsoft.entity.dto.CusTestPointPageParam;
import com.xinsoft.entity.dto.SysCountDTO;
import com.xinsoft.entity.po.CusDevice;
import com.xinsoft.entity.vo.CusDeviceVo;
import org.json.JSONObject;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
* @author hsm
* @description 针对表【cus_device(设备表)】的数据库操作Service
* @createDate 2023-06-13 15:45:33
*/
public interface CusDeviceService extends IService<CusDevice> {

    /**
     * 方法描述: [查询设备分页列表]
     * 初始作者: hsm
     * 创建时间:  2023
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [cusDeviceParam]
     * return CusDeviceVo>
     */
    IPage<CusDeviceVo> findPageListByParam(CusDevicePageParam param);

    /**
     * 方法描述: [添加设备]
     * 初始作者: hsm
     * 创建时间:  2023
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [cusDeviceDTO]
     * return com.socks.zhhc.core.system.user.entity.CusDevice
     */
    CusDevice addCusDevice(CusDevice cusDevice);

    /**
     * 方法描述: [添加设备]
     * 初始作者: hsm
     * 创建时间:  2023
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [cusDeviceDTO]
     * return CusDevice
     */
    CusDevice editCusDevice(CusDevice cusDevice);

    /**
     * 方法描述: [删除设备信息]
     * 初始作者: hsm
     * 创建时间:  2023
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [userName]
     * return java.lang.Boolean
     */
    void del(List<Integer> ids);

    /**
     * 方法描述: [获取设备]
     * 初始作者: hsm
     * 创建时间:  2023/04/20
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [cusDevice]
     * return com.socks.zhhc.core.system.user.entity.CusDevice
     */
    CusDeviceVo getCusDevice(Integer id);


    /**
     * 方法描述:
     * 初始作者: hsm
     * 创建时间:  2023/04/20
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [cusDevice]
     * return com.socks.zhhc.core.system.user.entity.CusDevice
     */
    JSONObject importExcel(MultipartFile multipartFile) throws IOException;

    List<CusDeviceVo> findListByParam(CusDevicePageParam param);

    List<CusDeviceNetWorkDTO> networkingDeviceList(CusDeviceNetWorkDTO cusDeviceNetWorkDTO);

    Map<String, Integer> deviceStatusData();

    SysCountDTO deviceCount();
}
